// select ...
const { Blog, User } = require("./model");

// 异步创建
!(async function () {
  // 查询一条记录
  const zhangsan = await User.findOne({
    where: {
      userName: "张三",
    },
  });
  console.log("查询一个", zhangsan.dataValues);

  // 查询指定列
  const zhangsan2 = await User.findOne({
    attributes: ["id", "userName"],
    where: {
      userName: "张三",
    },
  });
  console.log("查询指定列", zhangsan2.dataValues);

  // 查询一个列表
  const zhangsanBloglist = await Blog.findAll({
    where: {
      userId: 1,
    },
    // 分页
    limit: 2,
    offset: 0,
    // 排序
    order: [
      ["id", "desc"], // 只有一列排序
    ],
  });

  // 数组 要通过循环
  console.log(
    "查询列表",
    zhangsanBloglist.map((e) => e.dataValues)
  );

  // 查询总数
  const zhangsanBlogCount = await Blog.findAndCountAll({
    where: {
      userId: 1,
    },
  });
  console.log(
    "查询总数",
    zhangsanBlogCount.count,
    zhangsanBlogCount.rows.map((e) => e.dataValues) // 等于findall查询出来的数据
  );

  // 连表查询
  const blogListWithUser = await Blog.findAndCountAll({
    order: [
      ["id", "desc"], // 只有一列排序
    ],
    include: [
      // 连表,只连一个表
      {
        model: User,
        attributes: ["userName", "nickName"],
        where: {
          userName: "张三",
        },
      },
    ],
  });

  console.log(
    "连表查询",
    blogListWithUser.count,
    blogListWithUser.rows.map((e) => e.dataValues.user.dataValues) // 等于findall查询出来的数据
  );
})();
